package SQL_L

import org.apache.spark.sql.{SaveMode, SparkSession}
import org.apache.spark.sql.types.{FloatType, IntegerType, StringType, StructField, StructType}

class Hive {
  def main(args: Array[String]): Unit = {
    //1、创建SparkSession
    val spark = SparkSession.builder()
      .appName("Hive")
      .enableHiveSupport()
      //填写hive有关的一些信息（端口号、数据库地址等）
      .config("hive.metastore.uris", "a://node1:9000")
      .config("spark.sql.warehouse.dir", "/dataset/hive")
      .getOrCreate()
    //读取数据
    import spark.implicits._
    //hive表的每一列的数据格式
    val schema = StructType {
      List(
        StructField("name", StringType),
        StructField("age", IntegerType),
        StructField("gpa", FloatType)
      )
    }
    //读取hdfs上的数据存入到hive中
    val df = spark.read
      //分割符时制表符
      .option("delimited", "\t")
      //文件的schema就是上面定义的
      .schema(schema)
      //文件在hdfs中的路径
      .csv("hdfs:///dataset/student.csv")
    val result = df.where('age > 50)
    //写入数据
    result.write.mode(SaveMode.Overwrite).saveAsTable("spark.student")
  }
}
